# -*- coding: utf-8 -*-
from mod.server.system.serverSystem import ServerSystemclass BaseServer(ServerSystem):
    def __init__(self, namespace, systemName):
        """
        初始化
        """
        pass

class ServerPlugin:
    """
    插件主类，在网易的ClientSystem基础上扩展了与UI注册、监听事件有关的一些函数
    """

    def __init__(self, sysName):
        """
        初始化
        """
        pass

    def onInit(self):
        # type: () -> None
        """
        请重写此函数，并实现插件加载时的逻辑，如创建监听器，注册UI等
        """
        pass

    def RegisterEventServer(self, eventName, instance, func):
        # type: (str, object, callable) -> None
        """
        在非UI类调用，用于监听服务端发来的包
        用法例：见 listenerDemo
        Args:
            eventName (str): 客户端发来的事件名，对应客户端NotifyToServer中的eventName参数
            instance (object): 监听函数所在的类，一般都是self
            func (callable): 监听的回调函数。接受一个参数，即NotifyToServer中的data参数
        """
        pass

    def RegisterEventClient(self, eventName, instance, func):
        # type: (str, object, callable) -> None
        """
        在非UI类调用，用于监听原生游戏客户端事件
        用法例：见 listenerDemo
        Args:
            eventName (str): 原版服务端事件名，见 https://mc.163.com/dev/mcmanual/mc-dev/mcdocs/1-ModAPI/%E4%BA%8B%E4%BB%B6/%E4%BA%8B%E4%BB%B6%E7%B4%A2%E5%BC%95%E8%A1%A8.html?catalog=1
            instance (object): 监听函数所在的类，一般都是self
            func (callable): 监听的回调函数。接受一个参数，即事件信息
        """
        pass

    def NotifyToClient(self, playerId, eventName, data):
        # type: (str, str, dict) -> None
        """
        向指定玩家的客户端发包。
        Args:
            playerId (str): 想要发给的玩家实体ID
            eventName (str): 对应服务端监听时的事件名
            data (dict): 对应服务端监听函数传入的参数
        """
        pass

